<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/actions/qualitydepartmentemployee/QualityDepartmentEmployeeAction.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/actions/Response.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/model/Service/Service.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/model/ResponsibilityService.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/entities/Responsibility.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/entities/Indicator.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/const/Error.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/model/Service/ServiceFactory.php';


final class ResponsibilityAddAction extends QualityDepartmentEmployeeAction {
	protected function execute(Response $response) {
		// пришли следующие параметры:
		// "id_indicator"
		// может быть не все Кварталы отчетности: 
		// "quarter1", "quarter2", "quarter3", "quarter4"
		// структурныя подразделения, для которых определены параметры: 
		// это радиокнопки в формате 'r-depType-'.$idType.'-'.$idDepartment
				
		$indicalor = null;
		
		if(isset($_POST['id_indicator'])) {
			$idIndicator = $_POST['id_indicator'];
			unset($_POST['id_indicator']);
			
			$serviceFactory = new ServiceFactory(); 
			$serviceIndicator = $serviceFactory->getService('IndicatorService');
			$indicator = new Indicator();
			$indicator = $serviceIndicator->read($idIndicator);
			$planValue = $indicator->getPlanValue();
			
			// кварталы, для которых надо будет определять целевые показатели
			$quarters = array(0,0,0,0);
			
			if(isset($_POST['quarter1'])) {
				$quarters[0] = 1;
				unset($_POST['quarter1']);
			}
			if(isset($_POST['quarter2'])) {
				$quarters[1] = 1;
				unset($_POST['quarter2']);
			}
			if(isset($_POST['quarter3'])) {
				$quarters[2] = 1;
				unset($_POST['quarter3']);
			}
			if(isset($_POST['quarter4'])) {
				$quarters[3] = 1;
				unset($_POST['quarter4']);
			}
			
			// надо перебрать все радиокнопки
			// и найти последнее вхождение "-"
			// а после него взять число. Это и будет индекс структурного подразделения
			foreach ($_POST as $key => $value) {
				// индекс последнего вхождения '-' в имя параметра
				// после него индекс структурного подразделения
    			$i = strrpos($key,'-');
    			// забрать индекс структурного подразделения
    			$idDepartment = (int)substr($key,$i+1);
    			
    			$serviceResponsibility = $serviceFactory->getService('ResponsibilityService');
				switch ((int)$value) {
					case 0:
						// структ подр заполняет значения показателя');
						
						// записываем в таблицу responsibility
						// информацию напрямую, без создания объекта responsibility
																	
						// на этом этапе добавления ответственности нам не нужно плановое значение
						// полагаем его NULL в любом случае - 
						// т.е. этого аргумента просто нет в агрументах метода
						$idResponsibility = $serviceResponsibility->putRecord(0,$idDepartment,$idIndicator);
											
						// в таблице indicator _value создаем записи
						// сответствующие кварталам наблюдения
						foreach ($quarters as $qKey=>$qValue){
							if($qValue){
								$serviceResponsibility->putRecordIndicatorValue($qKey+1,$idResponsibility);
		
							}							
							
						}
						
						break;
					case 1:
						Logger::debug('структ подр '.$idDepartment.' просматривает значения показателя');
						$idResponsibility = $serviceResponsibility->putRecord(1,$idDepartment,$idIndicator);
							
						Logger::debug('-- запись в таблицу responsibility c индексом'.(int)$idResponsibility);
						break;
					default:
						Logger::debug('структ подр '.$idDepartment.' не отвечает за этот показатель');
				}
			
				
				
				
				
				
			}

			
		}
		$response->setActionPath('/editing/process/edit.html');
	}
}
?>